package com.ruoyi.mapper;

import java.math.BigDecimal;
import java.util.List;
import com.ruoyi.domain.YcThesis;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

/**
 * 论文Mapper接口
 * 
 * @author 杨琛
 * @date 2020-09-09
 */
public interface YcThesisMapper 
{
    /**
     * 查询论文
     * 
     * @param id 论文ID
     * @return 论文
     */
    public YcThesis selectYcThesisById(Long id);

    /**
     * 查询论文列表
     * 
     * @param ycThesis 论文
     * @return 论文集合
     */
    public List<YcThesis> selectYcThesisList(YcThesis ycThesis);

    /**
     * 新增论文
     * 
     * @param ycThesis 论文
     * @return 结果
     */
    public int insertYcThesis(YcThesis ycThesis);

    /**
     * 修改论文
     * 
     * @param ycThesis 论文
     * @return 结果
     */
    public int updateYcThesis(YcThesis ycThesis);

    /**
     * 删除论文
     * 
     * @param id 论文ID
     * @return 结果
     */
    public int deleteYcThesisById(Long id);

    /**
     * 批量删除论文
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteYcThesisByIds(String[] ids);


    /**
     * 提交申报
     *
     * @param id 课题ID
     * @return 结果
     */
    @Update("update yc_thesis set on_records = 2 where id=#{id}")
    int submitApplications(Long id);

    /**
     * 提交申请备案
     *
     * @param id 课题ID
     * @return 结果
     */
    @Update("update yc_thesis set status = 1 where id=#{id}")
    int updateSubmitForApproval(Long id);


    /**
     * 撤销申请
     *
     * @param id 课题ID
     * @return 结果
     */
    @Update("update yc_thesis set status = 100 where id=#{id}")
    int withdrawClaim(Long id);


    /**
     * 驳回备案
     *
     * @param id 课题ID
     * @return 结果
     */
    @Update("update yc_thesis set on_records = 3 where id=#{id}")
    int refusal(Long id);


    /**
     * 通过申请备案
     *
     * @param id 课题ID
     * @return 结果
     */
    @Update("update yc_thesis set on_records = 1 where id=#{id}")
    int consent(Long id);


    /**
     * 驳回申请审批
     *
     * @param id 课题ID
     * @return 结果
     */
    @Update("update yc_thesis set status = 2 where id=#{id}")
    int updateDismissTheApproval(Long id);


    /**
     * 通过申请审批
     *
     * @param id 课题ID
     * @return 结果
     */
    @Update("update yc_thesis set status = 3 where id=#{id}")
    int updateBeApproved(Long id);


    /**
     * 管理员
     *
     * @param ycThesis 论文对象
     * @return 课题
     */
    List<YcThesis> selectYcTaskListAdmin(YcThesis ycThesis);
}
